"""
配置管理：从环境变量读取任务参数。

优先读取环境变量，未设置时使用默认值或 None。

环境变量：
- FEISHU_PARENT_TOKEN
- FEISHU_ACCESS_TOKEN（可选）
- FEISHU_COOKIE（可选）
- FEISHU_SPACE_CHILDREN_BASE_URL（可选，配合 COOKIE 使用）
- FEISHU_LIMIT（可选，默认 100）
- OUTPUT_FILE（可选，默认 api_response.json）
"""

from __future__ import annotations

import os
from dataclasses import dataclass
from typing import Optional
from dotenv import load_dotenv


@dataclass
class Settings:
    """任务配置。"""

    parent_token: str
    cookie: Optional[str]
    space_children_base_url: Optional[str]
    limit: int
    output_file: str


def load_settings() -> Settings:
    """
    读取配置：优先使用环境变量。

    返回：Settings
    """

    # 1. 加载 .env 并读取环境变量
    load_dotenv()
    parent_token = os.getenv("FEISHU_PARENT_TOKEN", "").strip()
    cookie = (os.getenv("FEISHU_COOKIE") or "").strip() or None
    space_children_base_url = (os.getenv("FEISHU_SPACE_CHILDREN_BASE_URL") or "").strip() or None
    limit_str = os.getenv("FEISHU_LIMIT", "100").strip()
    output_file = os.getenv("OUTPUT_FILE", "api_response.json").strip()

    # 2. 转换 limit
    try:
        limit = int(limit_str)
    except ValueError:
        limit = 100

    # 3. 校验 parent_token
    if not parent_token:
        raise ValueError("必须设置 FEISHU_PARENT_TOKEN")

    # 4. 返回设置对象
    return Settings(
        parent_token=parent_token,
        cookie=cookie,
        space_children_base_url=space_children_base_url,
        limit=limit,
        output_file=output_file,
    )

